package org.opens.text.parseHandle;

import org.opens.text.constant.ParseType;
import org.opens.text.parseHandle.impl.EmptyHandle;
import org.opens.text.parseHandle.impl.FileHandle;
import org.opens.text.parseHandle.impl.StringHandle;

import java.util.EnumMap;
import java.util.Map;

/**
 * 功能描述
 *
 * @author by zhangyuming
 * @date 2022/9/20
 */
public class ParseHandleFactory {

    private static Map<ParseType, ParseHandle> PARSE_INSTANCE_MAP = new EnumMap<>(ParseType.class);

    static {
        PARSE_INSTANCE_MAP.put(ParseType.STRING, new StringHandle());
        PARSE_INSTANCE_MAP.put(ParseType.FILE, new FileHandle());
        PARSE_INSTANCE_MAP.put(ParseType.EMPTY, new EmptyHandle());
    }

    /**
     * 根据解析类型获取对应的handle
     * @param parseType 解析类型
     * @return 对应的handle
     */
    public static ParseHandle getInstance(ParseType parseType) {
        return PARSE_INSTANCE_MAP.getOrDefault(parseType, PARSE_INSTANCE_MAP.get(ParseType.EMPTY));
    }

}
